//
//  Problem1016.swift
//  TestProject
//
//  Created by 毕武侠 on 2021/4/6.
//  Copyright © 2021 zhulong. All rights reserved.
//

import UIKit

/*
 1016. 子串能表示从 1 到 N 数字的二进制串
 给定一个二进制字符串 S（一个仅由若干 '0' 和 '1' 构成的字符串）和一个正整数 N，如果对于从 1 到 N 的每个整数 X，其二进制表示都是 S 的子串，就返回 true，否则返回 false。
 
 示例 1：
     输入：S = "0110", N = 3
     输出：true
 
 示例 2：
     输入：S = "0110", N = 4
     输出：false
  
 提示：
     1 <= S.length <= 1000
     1 <= N <= 10^9
 */
@objcMembers class Problem1016: NSObject {
    func solution() {
        print(queryString("0110", 3))
        print(queryString("0110", 4))
    }
    
    /*
     暴力破解：
     遍历1～N的每个数字，然后转换成二进制，看看是否在S中
     */
    func queryString(_ S: String, _ N: Int) -> Bool {
        for n in 1...N {
            if S.contains(String(n, radix: 2)) == false {
                return false
            }
        }
        return true
    }
}
